package com.smart.common.core.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Location {
    /**
     * 结果状态。
     */
    private int result;

    /**
     * 分页信息对象。
     */
    private Pagination pagination;

    /**
     * 信息列表。
     */
    private List<Info> infos;

    // 可以在这里添加构造函数

    /**
     * 分页信息类，包含分页相关的各种属性。
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Pagination {
        /**
         * 当前页。
         */
        private int currentPage;

        /**
         * 总页数。
         */
        private int totalPages;

        /**
         * 每页记录数。
         */
        private int pageRecords;

        /**
         * 总记录数。
         */
        private int totalRecords;

        /**
         * 开始记录位置。
         */
        private int startRecord;

        /**
         * 结束记录位置。
         */
        private int endRecord;

        /**
         * 下一页。
         */
        private int nextPage;

        /**
         * 上一页。
         */
        private int previousPage;

        /**
         * 是否有下一页。
         */
        private boolean hasNextPage;

        /**
         * 是否有上一页。
         */
        private boolean hasPreviousPage;

        /**
         * 主键。
         */
        private String primaryKey;

        /**
         * 排序参数。
         */
        private Object sortParams;

        /**
         * 分页信息。
         */
        private Object pagin;

        /**
         * 每页记录数。
         */
        private Object rp;

        /**
         * 查询条件。
         */
        private Object query;

        /**
         * 查询类型。
         */
        private Object qtype;

        /**
         * 是否分页。
         */
        private boolean page;

        /**
         * 是否直接查询。
         */
        private boolean directQuery;

        // 可以在这里添加构造函数
    }

    /**
     * 信息类，包含每个信息项的具体数据。
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Info {
        /**
         * 版本标识。
         */
        private String vi;

        /**
         * 位置坐标。
         */
        private String pos;

        /**
         * 经度（整数部分）。
         */
        private long jd;

        /**
         * 纬度（整数部分）。
         */
        private long wd;

        /**
         * 经度（浮点数）。
         */
        private String mlng;

        /**
         * 纬度（浮点数）。
         */
        private String mlat;

        /**
         * 时间戳。
         */
        private long tm;

        /**
         * 缩写。
         */
        private Object abbr;

        // 可以在这里添加构造函数
    }
}